package com.delio.client.pagos.horarios;

import java.util.List;

import com.delio.client.idioma.DelioConstants;

import com.delio.client.pagos.asistencias.PanelNuevaAsistencia;
import com.delio.client.util.MensajeData;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class Horarios {
	private static DelioConstants k = GWT.create(DelioConstants.class);
	private static HorarioServiceAsync ms = GWT.create(HorarioService.class);

	public static ListStore<BeanModel> store;
	public static ListLoader<ListLoadResult<BeanModel>> loader;
	public static ListStore<BeanModel> store2;
	public static ListLoader<ListLoadResult<BeanModel>> loader2;

	private static Integer horario_id;
	public static Integer contrato_id;

	public static PanelNuevaAsistencia panelnuevaasistencia;
	public static void save(Horario ho) {
		horario_id = ho.getId();
		ms.save(ho, new AsyncCallback<MensajeData>() {

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {
					if (horario_id != null)
						store.rejectChanges();
					else
						loader.load();

				} else {
					MessageBox.alert(k.sistemaDelio(), k.horarioNoGuardado(),
							null);
				}
			}

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}
		});

	}
	public static void delete(Integer id) {
		ms.delete(id, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado)
					loader.load();
				else
					MessageBox.alert(k.sistemaDelio(), k.horarioNoEliminado(),
							null);

			}
		});
	}
	public static void deleteAll(String ids) {
		ms.deleteAll(ids, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado)
					loader.load();
				else
					MessageBox.alert(k.sistemaDelio(), k.horarioNoEliminados(),
							null);

			}
		});

	}

	public static void getList() {
		RpcProxy<List<Horario>> proxy = new RpcProxy<List<Horario>>() {

			@Override
			protected void load(Object loadConfig,
					AsyncCallback<List<Horario>> callback) {
				ms.getLista(callback);

			}
		};
		loader = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
				new BeanModelReader());

		store = new ListStore<BeanModel>(loader);
	}

	public static void getHorario() {
		ms.getLista(contrato_id,new AsyncCallback<List<Horario>>() {
			
			@Override
			public void onSuccess(List<Horario> result) {
			panelnuevaasistencia.txtHoraentrada.setValue(result.get(0).getHoraentrada());
			panelnuevaasistencia.txtHorasalida.setValue(result.get(0).getHorasalida());
			}
			
			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				
			}
		});
	}
}
